home *** CD-ROM | disk | FTP | other *** search
/ 3D GFX / 3D GFX.iso / pcutils / dos / pate / gxpat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-31  |  3.4 KB  |  112 lines

  1. /**********************************************************************
  2. Fill-Pattern Tester 1.0
  3. Copyright (c) 1994 by Jouni Miettunen. All Rights Reserved.
  4.  
  5. Usage: tester [ pattern_file [ foreground_color background_color ]]
  6.  
  7. 0  black    4  red        8  darkgray    12 lightred
  8. 1  blue        5  magenta    9  lightblue    13 lightmagenta
  9. 2  green    6  brown    10 lightgreen    14 yellow
  10. 3  cyan        7  gray        11 lightcyan    15 white
  11.  
  12. Note: mode 640x480x16
  13.  
  14. **********************************************************************/
  15.  
  16. #include <conio.h>    /* conio */
  17. #include <stdio.h>    /* fopen,fscanf,EOF,putchar,fclose,fflush */
  18. #include <stdlib.h>    /* exit */
  19.  
  20. #include <gxlib.h>    /* Genus GX kernel */
  21. #include <grlib.h>    /* Genus GX graphics */
  22.  
  23. #define BEEP()    putchar(7)
  24. #define ESC    0x1b
  25.  
  26. static void near init_screen    ( void                );
  27. static void near show_pattern    ( int, int, char *        );
  28. static void near exit_all    ( void                );
  29.  
  30. /* main ***************************************************************/
  31. /* the main loop ******************************************************/
  32. /**********************************************************************/
  33. int main(
  34.     int    argc,
  35.     char    **argv
  36.     )
  37. {
  38. char    p[8]    = {0},
  39.     dsc[25]    = {0};
  40. FILE    *fp;
  41. int     fg    = grLIGHTBLUE,
  42.     bg    = grBLUE;
  43.  
  44. if ((fp=fopen(((argc==1)?"patterns.pat":argv[1]),"rb"))==NULL) exit(1);
  45. if (argc==4) { fg=atoi(argv[2])%16; bg=atoi(argv[3])%16; }
  46.  
  47. init_screen();
  48.  
  49. /* sample of expected format - TooLate Fill-Pattern Editor patterns.pat
  50.     {0x54,0x82,0x28,0x82,0x28,0x82,0x54,0x00}, // loose see-through net
  51. */
  52.  
  53. while (fscanf(fp," {%x,%x,%x,%x,%x,%x,%x,%x}, // %24[^\r\n]%*c",
  54.         &p[0],&p[1],&p[2],&p[3],&p[4],&p[5],&p[6],&p[7],dsc)!=EOF) {
  55.     show_pattern(fg,bg,p);
  56.     grSetColor(grWHITE); grSetBkColor(grBLACK);
  57.     grMoveTo(319,239); grOutText(dsc);
  58.     BEEP(); if (getch()==ESC) break;
  59. }
  60.  
  61. fclose(fp);
  62.  
  63. exit_all(); return 0;
  64.  
  65. } /*int main*/
  66.  
  67. /* init_screen ********************************************************/
  68. /* init all stuff, draw GUI etc. **************************************/
  69. /**********************************************************************/
  70. static void near init_screen(void)
  71. {
  72.  
  73. /* init graphics */
  74.     if (gxSetDisplay(gxVGA_12)<0) exit(2);
  75.     if (gxSetMode(gxGRAPHICS)<0) exit(3);
  76.     grSetTextStyle(grTXT8X16,grOPAQUE);
  77.     grSetTextJustify(grTCENTER,grTCENTER);
  78.     gxClearDisplay(grBLACK,0);
  79.  
  80. } /*void init_screen*/
  81.  
  82. /* show_pattern *******************************************************/
  83. /* full-screen fill-pattern *******************************************/
  84. /**********************************************************************/
  85. static void near show_pattern(
  86.     int    fgcolor,
  87.     int    bgcolor,
  88.     char    *pattern
  89.     )
  90. {
  91.     grSetFillStyle(grFUSER,fgcolor,grOPAQUE);
  92.     grSetFillPattern(grFUSER,pattern);
  93.     grSetBkColor(bgcolor);
  94.     grDrawRect(0,0,639,479,grFILL);
  95.  
  96. } /*void show_pattern*/
  97.  
  98. /* exit_all ***********************************************************/
  99. /* close down all the system ******************************************/
  100. /**********************************************************************/
  101. static void near exit_all(void)
  102. {
  103.     fflush(stdin);
  104.     gxSetMode(gxTEXT);
  105.     exit(0);
  106.  
  107. }/*void exit_all*/
  108.  
  109. /**********************************************************************/
  110. /*************************** A HAPPY END ******************************/
  111. /**********************************************************************/
  112.